package map;

import java.util.*;

/**
 * Map的遍历
 * Map有三种遍历方式：
 * 遍历所有的key
 * 遍历每一组key
 * */
public class MapDemo2 {
    public static void main(String[ ] args) {
        //Map<String,Integer> map = new HashMap<>();
        Map<String,Integer> map = new LinkedHashMap<>();
        map.put("语文",99);
        map.put("数学",98);
        map.put("英语",97);
        map.put("物理",96);
        map.put("化学",99);
        System.out.println(map);


        /*
        * 遍历所有的key
        * Set<k> keySet()
        * 将当前的Map中所有的Key以一个Set集合形式返回
        * */
        Set<String> keySet = map.keySet();
        for (String key:keySet){
            System.out.println("key:"+key);
        }
        System.out.println();





        /*
        * 遍历每一组键值对
        * Set<Entry> entrySet()
        * 将当前Map中每一组的
        *
        * getKey(),getValue() 两个方法分别用于获取对应的key和value
        * */
        Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
        for (Map.Entry<String,Integer> e : entrySet){
            String key = e.getKey();
            Integer value = e.getValue();
            System.out.println(key+":"+value);
        }



  /*
        遍历所有的value
        * Collection values()
        将当前Map中所有的value以一个集合形式返回
        * */

        Collection<Integer> values =map.values();
        for (Integer value:values){
            System.out.println("value:"+value);
        }
        System.out.println();
        /*
        * jdk8之后java为集合和map提供了新的遍历方式：
        * forEach:基于lambda表达式*/
        //values.forEach((value)-> System.out.println(value));
        values.forEach( System.out::println);


        //遍历Map时为遍历每组键值对
        map.forEach((k,v)-> System.out.println(k+":"+v));
    }
}
